Функції
Програма мовою С/С++ складається з функцій, одна з яких повина мати ім’я main. Структура кожної функції співпадає зі структурою головної функції.
Тип_результату_функції* Назва_функції(список параметрів )
{
Оператори тіла функції;
}Функції мови С/C++ бувають двох типів, функції що повертає значення та фнкції, яка не повертає значення. Функція, яка повертає значення, має стандатний тип (int, long, float, double…).
Функція, повертає значення за допомогою команди return <значення>, після чого функція закінчує своє виконання. Якщо функція, яка повертає значення не буде містити команди return компілятор видасть повідомлення про помилку.
Функції, які не повертають значення, мають тип void. Закінчення виконання функції відбувається за допомогою команди return, без параметрів або після виконання останньої стрічки самої функції. Функція типу void може не містити команди return.
Функції в програмі можна записувати перед головною функцією, після головної, та у іншому файлі.Якщо функція записана перед головною після головної функції то перед головною функцією її необхідно описати.Якщо функція записана в окремому файлі, то необхідно підключити цей файл за допомогою дерективи #include.
Програма знаходження найбільшого спільного дільника для двох натуральних чисел
Передача параметрів у функцію.
Змінні, які оголошені перед функціями або перед їх оголошенням називаються глобальними.Глобальні змінні можна використовувати в будь-якій функції.Змінні, які оголошені у функції, називається локальними. Вони видимиі тільки у даній функції.
Передача змінних у функцію відбувається через параметри функції.Щоб повернути значення функції через параметри використовують знак адреси пам’яті &.
Рекурсія
Рекурсія – це процес звернення функції до самого себе.
Приклади рекурсії:
зображення журналу в цьому самому журналі;
відображення в двох дзеркалах, які висять одне навпроти одного;
в телевізорі видно зображення цього телевізора, в яком видно зображення цього телевізора, і т.д.
свист мікрофона.
Рекурсія використовується для спрощення запису алгоритма.
Під час написання рекурсивних програм необхідно дотримуватись таких правил:
рекурсивна функція повина містити перевірка останнього входження;
рекурсивна функція повинна звертатись до самої себе безпосередньо, або через іншу функцію.
Рекурсивні задачі можна розбити на 4 види:
Задачі з рекурсивним формулюванням;
Задачі, які можна звести до рекурсивних;
Задачі з рекурсивним формулюванням;
Приклад.
Обчислити факторіал натурального числа.
n!=1234 ... *n
n!=n*(n-1)!
(n-1)!=(n-1)*(n-2)!
(n-2)!=(n-2)*(n-3)………………….
3!=3*2!
2!=2*1!
1!=1
0!=1 (за визначенням факторіалу)
#include<iostream>
using namespace std;
long factorial (int n)
{ if (n==0)
return 1;
else
return n*factorial(n-1);
}
int main()
{
int n;
long f;
cin>>n;
f=factorial(n);
cout << f;
return 0;
}